﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using RESTServicesMov.Dominio;
using System.Data.SqlClient;
using System.ServiceModel.Web;
using RESTServicesMov.Excepciones;
using System.Net;

namespace RESTServicesMov.Persistencia
{
    public class MovimientoDAO
    {
       

        public Movimiento CrearMovimiento(Movimiento movACrear)
        {
            Movimiento movCreado = null;

            movCreado = ObtenerMovimiento(movACrear.idmov);
            if (movCreado == null)//se puede usar el codigo para creación
            {
                string sql = "INSERT into MOVIMIENTO values (@idmov, @tipo, @ped,'')";

                using (SqlConnection con = new SqlConnection(ConexionBD.ObtenerCadena()))
                {

                    con.Open();
                    using (SqlCommand com = new SqlCommand(sql, con))
                    {
                        com.Parameters.Add(new SqlParameter("@idmov", movACrear.idmov));
                        com.Parameters.Add(new SqlParameter("@tipo", movACrear.tipmov));
                        com.Parameters.Add(new SqlParameter("@ped", movACrear.idped));

                        com.ExecuteNonQuery();
                    }
                }

                movCreado = ObtenerMovimiento(movACrear.idmov);
                return movCreado;
            }
            else// ya existe el movimiento
            {
                throw new WebFaultException<Excepcion>(
                     new Excepcion()
                     {
                         Mensaje = "El N° de Movimiento " + movACrear.idmov + " ya está registrado en el Sistema."
                     }, HttpStatusCode.InternalServerError);
            }
     
                 }

        public Movimiento ObtenerMovimiento(int id)
        {

            Movimiento movEncontrado = null;
            string sql = "SELECT * FROM MOVIMIENTO WHERE idMovi=@id";
            using (SqlConnection con = new SqlConnection(ConexionBD.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@id", id));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {
                            movEncontrado = new Movimiento()
                            {
                                idmov = int.Parse(resultado["idMovi"].ToString()),
                                tipmov = (string)resultado["tipmov"],
                                idped = int.Parse(resultado["idPedido"].ToString()),
                                fecMov = Convert.ToDateTime(resultado["fecMov"].ToString()),
                                                          };
                        }
                    }

                }
            }

            return movEncontrado;

        }



    }
}